package touge.fengzhuang;
import java.util.Scanner;
/**
 * @author ：wang-ting
 * @Date：2025/5/15 20:24
 */

/**
 * 本关任务：设计一个名为Time的类。这个类包括：
 *
 * 表示时间的数据域hour、minute和second。
 * 一个以当前时间创建Time对象的无参构造方法Time()，根据当前时间设置hour、minute和second数据域。可以使用System.currentTimeMillis()获取当前时间，具体请参考程序清单2-7（教材48页）。假设时间使用GMT。
 * 一个构造Time对象的构造方法Time(long elapsedTime)，用一个指定的流逝时间值来构造Time对象，这个值是从1970年1月1日午夜开始到现在流逝的毫秒数值。该构造方法应根据这个时间流逝值来设置hour、minute和second数据域。具体请参考程序清单2-7（教材48页）。
 * 一个以指定的小时、分钟和秒来构造Time对象的构造方法Time(int hour, int minute, int second)。
 * hour、minute和second的获取方法（访问器）。
 * 一个名为setTime(long elapsedTime)的方法，使用流逝的时间给对象设置一个新时间。例如，如果流逝的时间为555550000毫秒，则转换为10小时、19分钟、10秒
 * 测试时，先输入两个流逝时间，再创建两个Time对象，第一个对象使用无参构造方法Time()创建，然后使用setTime(long elapsedTime)方法设置时间，第二个对象使用Time(long elapsedTime)构造方法创建。在程序中显示这两个对象的小时、分钟和秒数。
 *
 * 测试类TestTime已经写好，请根据测试类和测试说明完成Time类的设计。
 */
class Time {
    /**
     * 私有数据域
     */
    private int hour;
    private int minute;
    private int second;

    /**
     * 一个以当前时间创建Time对象的无参构造方法Time()，根据当前时间设置hour、minute和second数据域。可以使用System.currentTimeMillis()获取当前时间，
     * System.currentTimeMillis()得到的是从1970年1月1日午夜开始到现在流逝的毫秒数值。将这个转化成时间参照setTime函数
     */
    public Time(){
        setTime(System.currentTimeMillis());
    }

    /**
     * 一个构造Time对象的构造方法Time(long elapsedTime)，用一个指定的流逝时间值来构造Time对象
     * @param elapsedTime 指定的流逝时间值
     */
    public Time(long elapsedTime){
        setTime(elapsedTime);
    }

    /**
     * 一个以指定的小时、分钟和秒来构造Time对象的构造方法Time
     * @param hour 小时
     * @param minute 分钟
     *  @param second  秒
     */
    public Time(int hour, int minute, int second){
        this.minute = minute;
        this.hour = hour;
        this.second = second;
    }

    /**
     * 一个名为setTime(long elapsedTime)的方法，使用流逝的时间给对象设置一个新时间。
     * @param elapsedTime 指定的流逝时间值
     */
    public void  setTime(long elapsedTime){
        long  smallTime = elapsedTime; //建一个毫秒变量存储传进来的流逝时间值
        long  totalSecond = smallTime / 1000; //计算得到总的秒数
        this.second = (int) totalSecond % 60;  //计算得到现在时间的秒数
        long totalMinute =  totalSecond / 60;  //计算得到一共流逝的分钟数
        this.minute = (int) totalMinute % 60;  //计算得到现在时间的分钟数
        long totalHour = totalMinute / 60; //计算总的流逝的小时数
        this.hour = (int) totalHour % 24; //计算现在时间的小时数
    }

    /**
     * hour的获取方法
     * @return hour、minute和second
     */
    public int getHour(){
        return this.hour;
    }
    public int getMinute(){
        return this.minute;
    }
    public int getSecond(){
        return this.second;
    }

}


/**
 * 测试类TestTime的代码如下
 */
public class TestTime {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        long elapsedTime1 = input.nextLong();
        long elapsedTime2 = input.nextLong();
        Time time1 = new Time();
        time1.setTime(elapsedTime1);
        System.out.println("Hour: " + time1.getHour() + " Minute: " +
                time1.getMinute() + " Second: " + time1.getSecond());
        Time time2 = new Time(elapsedTime2);
        System.out.println("Hour: " + time2.getHour() + " Minute: " +
                time2.getMinute() + " Second: " + time2.getSecond());
    }
}

